home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / p4 / p4-1_2b.lha / p4-1.2b / messages / sr_master.c < prev    next >
C/C++ Source or Header  |  1993-02-04  |  2KB  |  95 lines

  1. #include "p4.h"
  2. #include "sr_user.h"
  3.     
  4. main(argc,argv)
  5. int argc;
  6. char **argv;
  7. {
  8.     char buf[100];
  9.     int i, n;
  10.     int size;
  11.     int slv = 3;
  12.     int next;
  13.     int nslaves_t;
  14.     int nslaves_l;
  15.     int start, end;
  16.     char msg[200];
  17.     int type;
  18.     int id;
  19.     int from;
  20.     int my_id;
  21.     int my_cl_id;
  22.     char *incoming, *cp;
  23.     int start_time,end_time;
  24.     
  25.     p4_initenv(&argc,argv);
  26.     p4_create_procgroup();
  27.     if (p4_get_my_id() != 0)
  28.     {
  29.     slave();
  30.     exit(0);
  31.     }
  32.     
  33.     p4_dprintfl(9,"Starting master code.\n");
  34.  
  35.     nslaves_t = p4_num_total_ids() - 1;
  36.     nslaves_l = p4_num_cluster_ids() - 1;
  37.     p4_get_cluster_ids(&start,&end);
  38.  
  39.     my_id = p4_get_my_id();
  40.     my_cl_id = p4_get_my_cluster_id();
  41.     
  42.     p4_dprintfl(5,"p4_num_total_slaves=%d num_cluster_slaves=%d\n", 
  43.         nslaves_t,nslaves_l);
  44.     p4_dprintfl(5,"first_local_id=%d last_local_id=%d\n",start,end);
  45.     p4_dprintfl(5,"my_id=%d my_cluster_id=%d\n\n",my_id,my_cl_id);
  46.     
  47.     printf("enter a string:\n");
  48.     while (fgets(msg, sizeof(msg), stdin) != NULL)
  49.     {
  50.         for(cp=msg, i=1; *cp; i++, cp++)
  51.         if(*cp == '\n')
  52.         {
  53.         *cp = 0;
  54.         break;
  55.         }
  56.     p4_dprintfl(99,"sr_master sending %s size=%d\n", msg,i);
  57.     start_time = p4_clock();
  58.     p4_sendr(100, 1, msg, i);
  59.     p4_dprintfl(99,"sr_master receiving...\n");
  60.     type = -1;
  61.     from = -1;
  62.     /**********
  63.     while (!p4_messages_available(&type,&from))
  64.         ;
  65.     printf("master has msg available: type=%d from=%d\n",type,from);
  66.     **********/
  67.     incoming = NULL;
  68.     p4_recv(&type,&from, &incoming, &size);
  69.     end_time = p4_clock();
  70.     printf("total time=%d \n",end_time-start_time);
  71.     printf("master received :%s: from %d\n", incoming, from);
  72.     p4_dprintfl(10,"master: received from=%d type=%d size=%d buf=%s\n", 
  73.            from, type, size, incoming);
  74.     p4_msg_free(incoming);
  75.     printf("enter a string:\n");
  76.     }
  77.     
  78.  
  79.     p4_dprintfl(8,"waiting for end msg\n");
  80.  
  81.     p4_sendr(END, 1, msg, 0);
  82.     type = -1;
  83.     from = -1;
  84.     incoming = NULL;
  85.     p4_recv(&type, &from, &incoming, &size);
  86.     p4_dprintfl(8,"done  from=%d type=%d size=%d \n", 
  87.          from, type, size);
  88.     p4_msg_free(incoming);
  89.     
  90.     p4_dprintfl(8,"master entering waitforend\n");
  91.     p4_wait_for_end();
  92.     p4_dprintfl(8,"master past waitforend\n");
  93.     printf("master exiting normally\n");
  94. }
  95.